Skip to content

feat: add uv tool install support (dev editable + prod) with self-update#3

Merged
Yehonal merged 4 commits into
mainfrom
pr/uv-install
Jun 11, 2026
Merged

feat: add uv tool install support (dev editable + prod) with self-update#3
Yehonal merged 4 commits into
mainfrom
pr/uv-install

Conversation

@Yehonal

@Yehonal Yehonal commented Jun 10, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add pyproject.toml packaging that exposes scripts/syncwheel.py as the syncwheel console script via setuptools py-modules, with no file moves and continued support for python3 scripts/syncwheel.py ....
  • Document and support two uv install modes: uv tool install --editable /path/to/syncwheel for editable development installs and uv tool install "git+https://github.com/NestDevLab/syncwheel" for production installs.
  • Extend self-update install detection to distinguish git-clone installs from uv-tool installs.
  • Add uv-tool self-update support: self check-update reads the remote VERSION file directly and self update runs uv tool upgrade syncwheel.
  • Add scripts/install.sh for idempotent uv-based installs, including optional explicit uv bootstrap and editable install support.
  • Bump VERSION to 0.18.0 and update the changelog/docs.

Tests

  • python3 -m unittest discover -s tests -v (76 tests passed)
  • python3 scripts/check-version-bump.py --base origin/main

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds first-class packaging and installation support for Syncwheel via uv tool install, while extending the existing self-update/status machinery to correctly detect and handle uv-tool installs vs git checkouts vs standalone script usage.

Changes:

  • Introduce pyproject.toml + console-script entry point (syncwheel) while preserving python3 scripts/syncwheel.py ... execution.
  • Extend install-kind detection and self-update logic to support uv-tool installs (remote VERSION check + uv tool upgrade).
  • Add an idempotent scripts/install.sh installer and update docs/changelog/version to 0.18.0.

Reviewed changes

Copilot reviewed 8 out of 9 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
VERSION Bumps release version to 0.18.0.
scripts/syncwheel.py Adds packaging-aware version resolution, uv-tool detection, remote VERSION fetching, and uv-based self-update flow.
pyproject.toml Defines setuptools build + syncwheel console script pointing to syncwheel:main.
scripts/install.sh Adds an installer for uv tool installs (prod + editable dev).
tests/test_syncwheel.py Adds tests for version reporting, install-kind detection, uv self-update command selection, and remote VERSION parsing.
README.md Updates install and self-update documentation for uv tool workflows and preserves legacy script usage guidance.
CHANGELOG.md Documents 0.18.0 changes (uv packaging/install + install-kind-aware self update).
skills/syncwheel/SKILL.md Updates skill documentation to prefer PATH-based syncwheel when installed via uv tool.
.gitignore Ignores *.egg-info/ from setuptools builds.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread scripts/syncwheel.py
Comment on lines +82 to +90
def resolve_runtime_version(root=None):
if root:
version = read_version_file(Path(root) / 'VERSION')
if version:
return version
version = read_version_file(SOURCE_ROOT / 'VERSION')
if version:
return version
return package_metadata_version() or '0.6.0'
Comment thread scripts/install.sh
Comment on lines +51 to +58
if command -v curl >/dev/null 2>&1; then
curl -LsSf https://astral.sh/uv/install.sh | sh
elif command -v wget >/dev/null 2>&1; then
wget -qO- https://astral.sh/uv/install.sh | sh
else
echo "error: --with-uv requires curl or wget" >&2
exit 1
fi
@Yehonal Yehonal merged commit 9104cc4 into main Jun 11, 2026
4 checks passed
@Yehonal Yehonal deleted the pr/uv-install branch June 11, 2026 07:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants